The present invention relates generally to data communications, and particularly to techniques for implementing data flow control schemes in long-distance data communication links.
In conventional flow-control schemes, a device such as a media access controller (MAC) receives data from a link partner, and stores the data in a buffer. The MAC sends the data from its buffer to other devices, such as a link-layer device (LLD), based on status signals generated by the LLD indicating the LLD's readiness to accept the data. When data arrives at the MAC faster than the MAC can send data to the LLD, the amount of data stored in the MAC's buffer grows. To prevent the data from overflowing its buffer, the MAC sends flow control signals to its link partner based on the level of data in the MAC's buffer.
The usability of this scheme depends on the size of the MAC's buffer and the distance of the link. This scheme works well for short-distance links (usually on the order of hundreds or several thousands of meters), but is unsuitable for long-distance links (on the order of tens of kilometers and more) for the following reason. Long-distance links have much greater latency (that is, the time required for a signal to traverse the link) that short-distance links. In the time required for a pause signal sent by the MAC to reach its link partner, the amount of residual data (that is, the amount of data sent by the link partner after the MAC sent the flow control signal) can be very large. In such a scenario, a MAC serving 80 km fiber links requires approximately 1.15 mega-bits of buffer memory for each link.
One conventional approach to this problem is to simply provide enough buffer memory in the MAC to accommodate the worst-case scenario, where the link partner receives a pause signal from the MAC just after initiating transmission of a jumbo frame to the MAC. The amount of residual data is then the sum of the data in the jumbo frame and the data then traversing the long-distance link. One disadvantage to this approach is the substantial cost of incorporating such a large amount of memory into the MAC, which is generally implemented as an integrated circuit. Another disadvantage is that such a MAC, while perhaps suitable for long-distance links, is too expensive for use in short-distance links. Therefore a network designer would require two different MACS: one with a large amount of memory to accommodate long-distance links, and a less-expensive one with a small amount of memory for short-distance links.
Another approach is referred to as “SideBand Flow Control” (SBFC), which requires the use of an additional control channel between the MAC and LLD. The LLD uses the SBFC channel to force the MAC to send flow control signals to its link partner. One disadvantage of this approach is that it requires a modification to the interface between the MAC and the LLD.